
/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */

package LogicaNegocio.Controlador;

/**
 * Esta clase se encarga de definir el semaforo que es empleado
 * para la sincronizacion de procesos (hilos).
 *
 * P(). Permite pedir un recurso. Disminuye en 1 el valor del semáforo
 * si hay recursos disponibles. Sino lo obliga a esperar.
 *
 * V().Permite indicar que hay un recurso más disponible.
 * Aumenta en 1 el valor del semáforo.
 *
 *
 * @author Sebaxtian, David
 * Archivo: Semaforo.java
 * Version: 0.1
 * Fecha: sabado, 13 de marzo de 2010, 01:13 am
 */


public class Semaforo {

    private int valor;

    public Semaforo(int valor){
        this.valor = valor;
    }

    public synchronized void P(){
        valor--;
        if(valor < 0){
            try{
                this.wait();
            }catch(InterruptedException exc){
                System.err.println("Error en metodo P() del semaforo");
            }
        }
    }

    public synchronized void V(){
        valor++;
        this.notify();
    }
}
